1. Field of the Invention
The present invention relates generally to data processing systems. More specifically, the present invention relates to a computer implemented method, data processing system, and computer usable program code for creating virtual machine images for software.
2. Description of the Related Art
In modern computing environments, it is becoming increasingly popular to distribute software solutions as a set of virtual machine (VM) images as opposed to the various single software components that make up the solutions. A virtual machine image is file representation of a virtual machine, the virtual machine devices, and all the installed software components. Virtualizers, like VMware® Server, instantiate and run virtual machines starting from their file-based representation or image. Distributing software solutions as virtual machine images is very appealing for both software vendors and customers because of the simplified, less error prone, deployment, and maintenance process.
For example, consider software solutions like the IT Service Management (ITSM) that comprises the components and supported topologies as shown in FIGS. 3A and 3B. Topologies represent a particular mapping between one or more software components of a solution and one or more machines or topology nodes where these components are installed. Usually, a solution may be deployed in one or more topologies.
Instead of distributing the sixteen different major components and required middleware components shown in table 302 in FIG. 3A, seven pre-configured virtual machine images containing the entire software stack in each of the different topology nodes may be distributed, as shown in table 304 in FIG. 3B. A software stack is a set of software components, such as an operating system, middleware, or application components, needed to deliver a fully functional subsystem. In the case of deploying the separate software components, the deployment process consists of installing and configuring all the components of the different software stack and then configuring their inter-connections. In the case of deploying virtual machines (VMs), the deployment process consists of deploying the virtual machines associated with a certain topology and configuring the external connections in each virtual machine so that each virtual machine communicates correctly with the other virtual machines in the topology. Also, the virtual machines are configured to communicate with any necessary services in the existing computing infrastructure into which the virtual machines are being configured.
However, current virtual machine technology is aimed at the process of creating, duplicating, and deploying virtual machines themselves without reference to the application(s) installed in the virtual machine images or to the dependencies among multiple virtual machines that fulfill various parts of a distributed application. Thus, it would be advantageous to have an improved method for managing software with minimal user intervention.